<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 需求: 遍历数组 执行特定的操作
    // 1.forEach 数组的遍历  
    // function myEach(arr, fn) {
    //     for (var i = 0; i < arr.length; i++) {
    //         var item = arr[i];
    //         var index = i;
    //         var array = arr;
    //         fn(item, index, array); //实参，传入三个值
    //     }
    // }
    // var arr = [1, 4, 7, 2];
    // var sum = 0;
    // var x = function (a, b, c) { //形参，接收三个值
    //     document.write(a + "<br>");
    //     sum += a;
    // }
    // myEach(arr, x)
    // document.write(sum);


    // 2.map 数组的映射(迭代   => 根据原数组 生成新数组)
    // function myMap(arr, fn) {
    //     var brr = [];
    //     for (var i = 0; i < arr.length; i++) {
    //         var item = arr[i];
    //         var index = i;
    //         var array = arr;
    //         brr[brr.length] = fn(item, index, array); //实参，传入三个值
    //     }
    //     return brr;
    // }
    // var arr = [1, 4, 7, 2];
    // var re = myMap(arr, function (item, index, array) { //形参，接收三个值
    //     document.write(item + "<br>");
    //     return index + 10;
    // })
    // document.write(re);


    // 3.filter 数组的过滤/筛选 (把满足条件的元素 放到新数组中).
    // function myFilter(arr, fn) {
    //     var brr = [];
    //     for (var i = 0; i < arr.length; i++) {
    //         var item = arr[i];
    //         var index = i;
    //         var array = arr;
    //         var x = fn(item, index, array); //实参，传入三个值
    //         if (x) {
    //             brr.push(arr[index]);
    //         }
    //     }
    //     return brr;
    // }
    // var arr = [2, 8, 4, 6, 5, 7, 9, 3, 1];
    // var result = myFilter(arr, function (item, index, array) {
    //     return item % 2 ==0; 
    // })
    // console.log(result);


    // 4.some 判断数组中是否存在满足条件的元素.
    // function mySome(arr, fn) {
    //     var flag = false;
    //     for (var i = 0; i < arr.length; i++) {
    //         var item = arr[i];
    //         var index = i;
    //         var array = arr;
    //         var x = fn(item, index, array); //实参，传入三个值
    //         if (x) {
    //             flag = true;
    //             break;
    //         }
    //     }
    //     return flag;
    // }
    // var arr = [2, 8, 4, 6, 5, 7, 9, 3, 1];
    // var flag = mySome(arr, function (item, index, array) {
    //     return item % 2 ==0 && item % 7 == 0; 
    // })
    // console.log(flag); 

    
    // 5.every  判断数组中所有的元素是否都满足满足某个条件.
    function myEvery(arr, fn) {
        var flag = true;
        for (var i = 0; i < arr.length; i++) {
            var x = fn(arr[i], i, arr); //实参，传入三个值
            if (!x) {
                flag = false;
                break;
            }
        }
        return flag;
    }
    var arr = [2, 8, 4, 6];
    var flag = myEvery(arr, function (item, index, array) {
        // return item >= 1;
        return item % 2 ==0;
    })
    console.log(flag); 
</script>

</html>